<?php

class Autenticacao_model extends CI_Model {

    public $ID_SESSION = "user_id";

    public function __construct() {
        parent::__construct();
        session_start();
    }

    public function autenticar($login, $senha) {
        $q = $this->db->query("select * from tb_usuario , tb_categoria "
                . "where usu_categoria_id = cat_id and usu_login='$login' and usu_senha='$senha'");
        $res = $q->row();
        $cont = count($res);
        if ($cont > 0) {
            $this->createSession($res);
            return TRUE;
        } else {
            return FALSE;
        }
    }

    public function logoff() {
        session_destroy();
    }

    public function userSession() {
        $id = $_SESSION[$this->ID_SESSION];
        $q = $this->db->query("select * from tb_usuario , tb_categoria "
                . "where usu_categoria_id = cat_id and usu_codigo = $id");
        return $q->row();
    }

    public function createSession($user) {
        $_SESSION[$this->ID_SESSION] = $user->usu_codigo;
    }

    public function isAdmin() {
        if (isset($_SESSION[$this->ID_SESSION])) {
            return $this->userSession($_SESSION[$this->ID_SESSION])->cat_descricao == "Administrador";
        }
        return false;
    }

    public function isFuncionario() {
        if (isset($_SESSION[$this->ID_SESSION])) {
            return $this->userSession($_SESSION[$this->ID_SESSION])->cat_descricao == "Funcionário";
        }
        return false;
    }

    public function isCliente() {
        if (isset($_SESSION[$this->ID_SESSION])) {
            return $this->userSession($_SESSION[$this->ID_SESSION])->cat_descricao == "Cliente";
        }
        return false;
    }

    public function redirectCurrectMenu() {
        if ($this->Autenticacao_model->isAdmin()) {
            redirect(base_url() . 'admin/admin');
        } else if ($this->Autenticacao_model->isFuncionario()) {
            redirect(base_url() . 'funcionario/funcionario');
        } else if ($this->Autenticacao_model->isCliente()) {
            redirect(base_url() . 'cliente/cliente');
        } else {
            $data["type"] = "alert-danger";
            $data["message"] = "Não foi possivel definir o tipo de usuário";
            $this->load->view('auntenticacao', $data);
        }
    }

    public function setMessageSuccess($message) {
        $_SESSION["message"]['type']    = 'ok';
        $_SESSION["message"]['message'] = $message;
    }
    
    public function setMessageDanger($message) {
        $_SESSION["message"]['type']    = 'error';
        $_SESSION["message"]['message'] = $message;
    }

    public function setMessageIfo($message) {
        $_SESSION["message"]['type']    = 'info';
        $_SESSION["message"]['message'] = $message;
    }
    
    public function getMessageSession() {
        if (isset($_SESSION["message"])) {
            $m_type = $_SESSION["message"]['type'];
            $m_message = $_SESSION["message"]['message'];
            unset($_SESSION["message"]);
            return "<div id='message' class='top_message $m_type'>$m_message</div>";
        }
    }

}